package BD;
/*atual*/
import java.sql.*;
import java.util.ArrayList;
import javax.swing.JOptionPane;//
import sun.security.util.Length;

public class sabores extends bd {
/*id_produtos, descricao, custo, qtdatual, unidade, volume*/
    private int id_sabores  = 0   ;
    private String descricao = ""  ;        
    private ArrayList<sabores_Itens> sabores_itens = new ArrayList<sabores_Itens>();
   

    public int getId_sabores() {
        return id_sabores;
    }

    public void setId_sabores(int id_sabores) {
        this.id_sabores = id_sabores;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public ArrayList<sabores_Itens> getListsabores_itens() {
        return sabores_itens;
    }

    public void setListsabores_itens(ArrayList<sabores_Itens> listsabores_itens) {
        this.sabores_itens = listsabores_itens;
    }
    
    public boolean incluir() {            
        try {
            if (!estaConectado()) 
                conecta();          
            stmt = getConexao().createStatement();          
            sql = "INSERT INTO sabores VALUES ((select coalesce(max(id_sabores)+1,1) from sabores),"
                    +"'"+ this.getDescricao()+"');";            
            stmt.executeUpdate(sql);
            stmt.close();
            //System.out.print(this.sql);
            return true;
            
        } catch (SQLException objErro) {
            JOptionPane.showMessageDialog(null, "Não foi possível executar a Query \n" + objErro.getMessage());
            return false;
        }
    }

    public boolean alterar() {
        try {
            if (!estaConectado()) 
                conecta();          

            stmt = getConexao().createStatement();          
            sql = "UPDATE sabores "+
                  "SET descricao='"+ this.getDescricao() + "' "+                  
                  " WHERE id_sabores='"+ Integer.toString(this.getId_sabores())+"';";
                   
            stmt.executeUpdate(sql);
            stmt.close();
            //System.out.print(this.sql);
            return true;
        } catch (SQLException objErro) {
            JOptionPane.showMessageDialog(null, "Não foi possível executar a Query \n" + objErro.getMessage());
            return false;
        }

    }

    public ResultSet consultar() {
        if (!estaConectado()) {
            conecta();
        }
        try {
            stmt = getConexao().createStatement();
            sql = "SELECT *"
                    + "FROM sabores  "
                    + "WHERE 1=1 ";
            
            if (! this.descricao.equals("") ){
                sql = sql + " AND descricao like  '%"+this.getDescricao()+"%';";
            }
            rs = stmt.executeQuery(sql);
            return rs;
            
        } catch (SQLException objErro) {
            JOptionPane.showMessageDialog(null, "Não foi possível executar a Query \n" + objErro.getMessage());
            return null;
        }
        
    }
    public ArrayList<sabores> getItens(){
        ArrayList itens = new ArrayList();
        rs = this.consultar();
        try{
            while(rs.next()){
                sabores       obj  = new sabores();
                sabores_Itens obji = new sabores_Itens();
                ArrayList<sabores_Itens> arri = new ArrayList<sabores_Itens>();
                obj.setId_sabores(rs.getInt("id_sabores"));
                obj.setDescricao(rs.getString("descricao"));
                
                //preenche o campo forekey do detalhe para trazer já amarrado
                obji.setId_sabores(rs.getInt("id_sabores"));
//                arri = obji.getItens();                
                //busca os detalhes pestencentes ao mestre
                
                obj.setListsabores_itens(obji.getItens());

                itens.add(obj);
            }
            stmt.close();
            disconecta();
        }
        catch(SQLException erro){
            msgErro = erro.getMessage();            
        }        
        return itens;
    }
    
    public boolean excluir() {
        if (!estaConectado()) {
            conecta();
        }        
        // apagase o filho detalhe p´rimeiro 
        try {
            stmt = getConexao().createStatement();                      
            sql ="DELETE FROM sabores_itens "+                  
                 "WHERE id_sabores = "+ Integer.toString(this.id_sabores);            
            stmt.execute(sql);                        
       //depois apagase o pai mestre

            stmt = getConexao().createStatement();                      
            sql ="DELETE FROM sabores "+                  
                 "WHERE id_sabores = "+ Integer.toString(this.id_sabores);            
            stmt.execute(sql);                        
            return  true;
        } catch (SQLException objErro) {
            JOptionPane.showMessageDialog(null, "Não foi possível  a Query \n" + objErro.getMessage());
            return false;
        }      

    } 
    
    public boolean ChecaMovimento() {
        if (!estaConectado()) {
            conecta();
        }        
        // apagase o filho detalhe p´rimeiro 
        try {
            stmt = getConexao().createStatement();                      
            sql ="select id_pizzas FROM pizzas "+                  
                 "WHERE id_sabores = "+ Integer.toString(this.id_sabores);            
            return !stmt.executeQuery(sql).next();
       //depois apagase o pai mestre
        } catch (SQLException objErro) {
            JOptionPane.showMessageDialog(null, "Não foi possível  a Query \n" + objErro.getMessage());
            return false;
        }      

    } 
    
    
    
    public static void main(String []args){
        sabores sab = new sabores();
        ArrayList<sabores> list = new ArrayList<sabores>();
        ArrayList<sabores_Itens> li = new ArrayList<sabores_Itens>();
        
        list = sab.getItens();   
        
        
        
        for (int i = 0; i < list.size() ; i++) {
                System.out.println("ini "+ list.get(i).getDescricao());                      
            for (int j = 0;list.get(i).sabores_itens.size() > j; j++) {
                System.out.println("aki "+ list.get(i).sabores_itens.get(j).getId_sabores_itens());                      
                System.out.println("produto"+ list.get(i).sabores_itens.get(j).getDesc_produto());                      
                
            }
        }
//        sab.setId_sabores(1);
//        sab.setDescricao("a moda da casa");
//        sab.incluir();
//        sab.alterar();
//        sab.excluir();
    }

    
}
